package com.cdzy.controller;

import com.cdzy.common.ApiException;
import com.cdzy.common.ApiExceptionCodeMsg;
import com.cdzy.common.ApiResponse;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

/**
 * 通用上传控制器
 */
@RestController
@RequestMapping("/upload")
@CrossOrigin
public class UploadController {
    // 定义头像上传的目录
    private static final String AVATAR_UPLOAD_DIR = "D:\\upload\\avatar";
    // 定义图书分类图片上传目录
    private static final String BOOKTYPE_UPLOAD_DIR = "D:\\upload\\bookType";

    @PostMapping("/avatar")
    public ApiResponse<?> uploadAvatar(@RequestParam("file") MultipartFile file) {
        try {
            // 检查文件是否是图片，这里可以根据文件类型进行判断
            if (!file.getContentType().startsWith("image/")) {
                // 如果不是图片类型则抛异常
                throw new ApiException(ApiExceptionCodeMsg.AVATAR_UPLOAD_FAILED);
            }
            // 获取头像目录的path对象
            Path uploadDir = Paths.get(AVATAR_UPLOAD_DIR);
            // 创建头像目录
            Files.createDirectories(uploadDir);
            // 获取文件名
            String fileName = file.getOriginalFilename();
            // 创建一个唯一的文件名
            String uniqueFileName = System.currentTimeMillis() + "_" + fileName;
            // 文件保存路径
            Path path = uploadDir.resolve(uniqueFileName).toAbsolutePath();
            // 将上传的文件保存到服务器的文件系统中
            file.transferTo(path);
            // 返回文件名
            return ApiResponse.success(uniqueFileName);
        } catch (Exception e) {
            // 上传失败则抛异常
            throw new ApiException(ApiExceptionCodeMsg.AVATAR_UPLOAD_FAILED);
        }
    }


    @PostMapping("/bookType")
    public ApiResponse<?> uploadBookType(@RequestParam("file") MultipartFile file) {
        try {
            // 检查文件是否是图片，这里可以根据文件类型进行判断
            if (!file.getContentType().startsWith("image/")) {
                // 如果不是图片类型则抛异常
                throw new ApiException(ApiExceptionCodeMsg.BOOKTYPE_UPLOAD_FAILED);
            }
            // 获取头像目录的path对象
            Path uploadDir = Paths.get(BOOKTYPE_UPLOAD_DIR);
            // 创建头像目录
            Files.createDirectories(uploadDir);
            // 获取文件名
            String fileName = file.getOriginalFilename();
            // 创建一个唯一的文件名
            String uniqueFileName = System.currentTimeMillis() + "_" + fileName;
            // 文件保存路径
            Path path = uploadDir.resolve(uniqueFileName).toAbsolutePath();
            // 将上传的文件保存到服务器的文件系统中
            file.transferTo(path);
            // 返回文件名
            return ApiResponse.success(uniqueFileName);
        } catch (Exception e) {
            // 上传失败则抛异常
            throw new ApiException(ApiExceptionCodeMsg.BOOKTYPE_UPLOAD_FAILED);
        }
    }


}